#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N=205;

int n,m,k,v,cnt;
vector<int> adj[N];
int vis[N],res[N];

bool match(int u){
	for(int v:adj[u]){
		if(!vis[v]){
			vis[v]=true;
			if(!res[v] || match(res[v])){
				res[v]=u;
				return true;
			}
		}
	}
	return false;
}

void solve(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	cin>>k;
    	for(int j=0;j<k;j++){
    		cin>>v;
    		adj[i].push_back(v);
    	}
    }
    for(int i=1;i<=n;i++){
    	memset(vis,0,sizeof vis);
    	if(match(i))cnt++;
    }
    cout<<cnt;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--){
        solve();
    }
    return 0;
}